home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Hacks / Hacks ’97 / Warrior’s Progress / source code / Source / Libraries / Lists / ListLink.h < prev    next >
Encoding:
Text File  |  1997-06-28  |  1.2 KB  |  52 lines  |  [TEXT/CWIE]

  1. // ListLink.h
  2.  
  3. #ifndef ListLink_h
  4. #define ListLink_h
  5.  
  6. #ifndef ListNode_h
  7. #include "ListNode.h"
  8. #endif
  9. #ifndef Link_h
  10. #include "Link.h"
  11. #endif
  12.  
  13. template < class Target > class ListOf;
  14. template < class Target > class ListLoop;
  15.  
  16. template < class Target >
  17. class ListLink: private ListNode,
  18.                      public Link<Target>
  19.   {
  20.     friend class ListOf< Target >;
  21.     friend class ListLoop< Target >;
  22.     
  23.     private:
  24.         static const ListLink<Target> *DownCast( const ListNode *n )
  25.           {
  26.             return static_cast< const ListLink<Target>* >( n );
  27.           }
  28.  
  29.         static ListLink<Target> *DownCast( ListNode *n )
  30.           {
  31.             return static_cast< ListLink<Target>* >( n );
  32.           }
  33.  
  34.         static ListOf<Target>& DownCast( List& n );
  35.         
  36.     public:
  37.         ListLink( Target *t = 0 )
  38.           : Link<Target>( t )
  39.           {}
  40.         
  41.         const ListLink<Target> *Next() const            { return DownCast( ListNode::Next() ); }
  42.         const ListLink<Target> *Previous() const        { return DownCast( ListNode::Previous() ); }
  43.         
  44.         ListLink<Target> *Next()                            { return DownCast( ListNode::Next() ); }
  45.         ListLink<Target> *Previous()                        { return DownCast( ListNode::Previous() ); }
  46.         
  47.         ListNode::Owned;
  48.         ListOf<Target>& Owner() const                        { return DownCast( ListNode::Owner() ); }
  49.   };
  50.  
  51. #endif
  52.